package com.mercury.ec.module.air.controller.admin.order.vo.orderprice;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 机票订单价超级更新 Request VO")
@Data
public class AirOrderPriceSuperUpdateReqVO {

//    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7993")
//    private Long id;

    @Schema(description = "行程序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "行程序号不能为空")
    private Integer routeSerialNo;

    @Schema(description = "乘客序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "乘客序号不能为空")
    private Integer passengerSerialNo;

    @Schema(description = "原价格id", example = "26397")
    private Long originOrderPriceId;

//    @Schema(description = "订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30802")
//    @NotNull(message = "订单id不能为空")
//    private Long orderId;
//
//    @Schema(description = "订单行程id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31537")
//    @NotNull(message = "订单行程id不能为空")
//    private Long orderRouteId;
//
//    @Schema(description = "订单乘客id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29136")
//    @NotNull(message = "订单乘客id不能为空")
//    private Long orderPassengerId;

    @Schema(description = "票价级别FareBasis", example = "ZPR7WNNP")
    @Length(max = 64, message = "票价级别FareBasis长度不能超过64")
    private String fareBasis;

    @Schema(description = "出票代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "479")
    @NotBlank(message = "出票代码不能为空")
    @Length(max = 8, message = "出票代码长度不能超过8")
    private String airlineIssueNo;

    @Schema(description = "票号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789012345678")
    @NotBlank(message = "票号不能为空")
    @Length(max = 16, message = "票号长度不能超过16")
    private String ticketNo;

    @Schema(description = "终止票号")
    @Length(max = 16, message = "终止票号长度不能超过16")
    private String ticketLastNo;

    @Schema(description = "打票机号")
    @Length(max = 16, message = "打票机号长度不能超过16")
    private String ticketVendingMachineNo;

    @Schema(description = "编码客票状态", example = "VOID")
    @Length(max = 32, message = "编码客票状态长度不能超过32")
    private String ticketStatus;
//
//    @Schema(description = "出票失败原因 字典（air_order_ticket_fail_cause）")
//    private Integer ticketFailCause;
//
//    @Schema(description = "改签状态 字典（air_order_change_status 0-未改签，2-已改签）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "改签状态 字典（air_order_change_status 0-未改签，2-已改签）不能为空")
//    private Integer changeStatus;
//
//    @Schema(description = "改签员id 见表（system_users.id）", example = "10214")
//    private Long changeUserId;
//
//    @Schema(description = "改签部门id 见表（system_dept.id）", example = "11971")
//    private Long changeDeptId;
//
//    @Schema(description = "改签时间")
//    private LocalDateTime changeTime;
//
//    @Schema(description = "退票状态 字典（air_order_return_status 0-未退票，2-已退票）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "退票状态 字典（air_order_return_status 0-未退票，2-已退票）不能为空")
//    private Integer returnStatus;
//
//    @Schema(description = "退票订单类型 字典（air_order_return_order_type 1-退票/2-废票）", example = "1")
//    private Integer returnOrderType;
//
//    @Schema(description = "退票类型 字典（air_order_return_type 1-自愿/2-非自愿）", example = "1")
//    private Integer returnType;
//
//    @Schema(description = "退票员id 见表（system_users.id）", example = "1706")
//    private Long returnUserId;
//
//    @Schema(description = "退票部门id 见表（system_dept.id）", example = "5398")
//    private Long returnDeptId;
//
//    @Schema(description = "退票时间")
//    private LocalDateTime returnTime;
//
//    @Schema(description = "调账状态 字典（air_order_adjust_status 0-未调账，2-已调账）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "调账状态 字典（air_order_adjust_status 0-未调账，2-已调账）不能为空")
//    private Integer adjustStatus;
//
//    @Schema(description = "调账类型 字典（air_order_adjust_type 1-/2-/3-）", example = "2")
//    private Integer adjustType;
//
//    @Schema(description = "调账员id 见表（system_users.id）", example = "26248")
//    private Long adjustUserId;
//
//    @Schema(description = "调账部门id 见表（system_dept.id）", example = "23527")
//    private Long adjustDeptId;
//
//    @Schema(description = "调账时间")
//    private LocalDateTime adjustTime;

    @Schema(description = "附加费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "附加费不能为空")
    private BigDecimal saleAdditionalFee;

    @Schema(description = "服务费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "服务费不能为空")
    private BigDecimal saleServiceFee;

    @Schema(description = "升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "升舱费不能为空")
    private BigDecimal saleUpgradeFee;

    @Schema(description = "改期费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "改期费不能为空")
    private BigDecimal saleChangeFee;

    @Schema(description = "退票费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "退票费率不能为空")
    private BigDecimal saleReturnFeeRate;

    @Schema(description = "退票费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "退票费不能为空")
    private BigDecimal saleReturnFee;

    @Schema(description = "票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "17704")
    @NotNull(message = "票面价不能为空")
    private BigDecimal saleTicketPrice;

    @Schema(description = "销售价", requiredMode = Schema.RequiredMode.REQUIRED, example = "30919")
    @NotNull(message = "销售价不能为空")
    private BigDecimal salePrice;

    @Schema(description = "已用票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "8877")
    @NotNull(message = "已用票面价不能为空")
    private BigDecimal saleUsedPrice;

    @Schema(description = "机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "机建税不能为空")
    private BigDecimal saleAirportTax;

    @Schema(description = "已用机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用机建税不能为空")
    private BigDecimal saleUsedAirportTax;

    @Schema(description = "燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "燃油税不能为空")
    private BigDecimal saleOilTax;

    @Schema(description = "已用燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用燃油税不能为空")
    private BigDecimal saleUsedOilTax;

    @Schema(description = "销售税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "销售税不能为空")
    private BigDecimal saleTax;

    @Schema(description = "已用销售税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用销售税不能为空")
    private BigDecimal saleUsedTax;

    @Schema(description = "代理费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "代理费率不能为空")
    private BigDecimal saleAgencyFeeRate;

    @Schema(description = "代理费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "代理费不能为空")
    private BigDecimal saleAgencyFee;

    @Schema(description = "后返费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "后返费率不能为空")
    private BigDecimal saleBackRebateFeeRate;

    @Schema(description = "后返费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "后返费不能为空")
    private BigDecimal saleBackRebateFee;

    @Schema(description = "记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28158")
    @NotNull(message = "记奖价不能为空")
    private BigDecimal salePrizePrice;

    @Schema(description = "记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "记奖税不能为空")
    private BigDecimal salePrizeTax;

//    @Schema(description = "销售金额", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "销售金额不能为空")
//    private BigDecimal saleAmount;

//    @Schema(description = "应收", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "应收不能为空")
//    private BigDecimal saleReceivable;

//    @Schema(description = "实收", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "实收不能为空")
//    private BigDecimal saleReceipts;

//    @Schema(description = "支付状态 字典（system_pay_status）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "支付状态 字典（system_pay_status）不能为空")
//    private Integer salePayStatus;
//
//    @Schema(description = "支付科目id 见表（basic_pay_subject.id）", example = "11044")
//    private Long salePaySubjectId;
//
//    @Schema(description = "支付方式id 见表（basic_pay_type.id）", example = "5098")
//    private Long salePayTypeId;
//
//    @Schema(description = "支付账号", example = "20584")
//    private String salePayAccount;
//
//    @Schema(description = "支付单号")
//    private String salePayOrderNo;
//
//    @Schema(description = "支付时间")
//    private LocalDateTime salePayTime;
//
//    @Schema(description = "是否在线支付")
//    private Boolean salePayOnline;

//    @Schema(description = "采购商id 见表（basic_vendor.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "14000")
//    @NotNull(message = "采购商id 见表（basic_vendor.id）不能为空")
//    private Long purchaseId;
//
//    @Schema(description = "采购单号")
//    private String purchaseOrderNo;

    @Schema(description = "采购附加费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购附加费不能为空")
    private BigDecimal purchaseAdditionalFee;

    @Schema(description = "采购服务费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购服务费不能为空")
    private BigDecimal purchaseServiceFee;

    @Schema(description = "采购升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购升舱费不能为空")
    private BigDecimal purchaseUpgradeFee;

    @Schema(description = "采购改期费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购改期费不能为空")
    private BigDecimal purchaseChangeFee;

    @Schema(description = "采购退票费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购退票费率不能为空")
    private BigDecimal purchaseReturnFeeRate;

    @Schema(description = "采购退票费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购退票费不能为空")
    private BigDecimal purchaseReturnFee;

    @Schema(description = "采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "18086")
    @NotNull(message = "采购票面价不能为空")
    private BigDecimal purchaseTicketPrice;

    @Schema(description = "采购价", requiredMode = Schema.RequiredMode.REQUIRED, example = "29611")
    @NotNull(message = "采购价不能为空")
    private BigDecimal purchasePrice;

    @Schema(description = "已用采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "32526")
    @NotNull(message = "已用采购票面价不能为空")
    private BigDecimal purchaseUsedPrice;

    @Schema(description = "采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购机建税不能为空")
    private BigDecimal purchaseAirportTax;

    @Schema(description = "已用采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购机建税不能为空")
    private BigDecimal purchaseUsedAirportTax;

    @Schema(description = "采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购燃油税不能为空")
    private BigDecimal purchaseOilTax;

    @Schema(description = "已用采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购燃油税不能为空")
    private BigDecimal purchaseUsedOilTax;

    @Schema(description = "采购税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购税不能为空")
    private BigDecimal purchaseTax;

    @Schema(description = "已用采购税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购税不能为空")
    private BigDecimal purchaseUsedTax;

    @Schema(description = "采购代理费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购代理费率不能为空")
    private BigDecimal purchaseAgencyFeeRate;

    @Schema(description = "采购代理费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购代理费不能为空")
    private BigDecimal purchaseAgencyFee;

    @Schema(description = "采购后返费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购后返费率不能为空")
    private BigDecimal purchaseBackRebateFeeRate;

    @Schema(description = "采购后返费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购后返费不能为空")
    private BigDecimal purchaseBackRebateFee;

    @Schema(description = "采购记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "8433")
    @NotNull(message = "采购记奖价不能为空")
    private BigDecimal purchasePrizePrice;

    @Schema(description = "采购记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购记奖税不能为空")
    private BigDecimal purchasePrizeTax;

//    @Schema(description = "采购金额", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购金额不能为空")
//    private BigDecimal purchaseAmount;
//
//    @Schema(description = "采购应付", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购应付不能为空")
//    private BigDecimal purchasePayable;
//
//    @Schema(description = "采购实付", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购实付不能为空")
//    private BigDecimal purchasePayment;
//
//    @Schema(description = "采购支付状态 字典（system_pay_status）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "采购支付状态 字典（system_pay_status）不能为空")
//    private Integer purchasePayStatus;
//
//    @Schema(description = "采购支付科目id 见表（basic_pay_subject.id）", example = "5867")
//    private Long purchasePaySubjectId;
//
//    @Schema(description = "采购支付方式id 见表（basic_pay_type.id）", example = "30994")
//    private Long purchasePayTypeId;
//
//    @Schema(description = "采购支付账号", example = "12883")
//    private String purchasePayAccount;
//
//    @Schema(description = "采购支付单号")
//    private String purchasePayOrderNo;
//
//    @Schema(description = "采购支付时间")
//    private LocalDateTime purchasePayTime;
//
//    @Schema(description = "采购是否在线支付")
//    private Boolean purchasePayOnline;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "创建人")
    private String creator;
}
